import type { RouteRecordRaw } from 'vue-router'
import { mergeRouteModules, traverseTreeValues } from '@general/utils'
import { coreRoutes, fallbackNotFoundRoute } from './core'

const dynamicRouteFiles = import.meta.glob('./modules/**/*.ts', {
    eager: true,
});

/** 动态路由 */
const dynamicRoutes: RouteRecordRaw[] = mergeRouteModules(dynamicRouteFiles)
const staticRoutes: RouteRecordRaw[] = []

/** 外部路由列表，访问这些页面可以不需要Layout，可能用于内嵌在别的系统(不会显示在菜单中) */
const externalRoutes: RouteRecordRaw[] = []


/**
 * 路由列表，由基本路由，外部路由和404兜底路由组成
 * 无需走权限校验（会一直显示在菜单中）
 */
const routes: RouteRecordRaw[] = [
    ...coreRoutes,
    ...externalRoutes,
    fallbackNotFoundRoute
];



/** 基本路由列表，这些路由不需要进入权限拦截 */
const coreRouteNames = traverseTreeValues(coreRoutes, route => route.name)

/** 有权限校验的路由列表，包含动态路由和静态路由 */
const accessRoutes = [...dynamicRoutes, ...staticRoutes]
export { accessRoutes, coreRouteNames, routes }